# s = "Hello, Python world!"
#  1. 字符串长度计算
# print(len(s))

#  2. 计算字符串中"o"字符的个数
# print(s.count('o'))

#  3. 将字符串转换为大写
# print(s.upper())

#  4. 将字符串转换为小写
# print(s.lower())

#  5. 查找"Python"在字符串中的位置
# print(s.find("Python"))

#  6. 替换字符串中的"world"为"universe"
# print(s.replace("world","universe"))

#  7. 检查字符串是否以"Hello"开始
# print(s.startswith("Hello"))

#  8. 检查字符串是否以"!"结尾
# print(s.endswith("!"))

#  9. 以","为分隔符，拆分字符串
# print(s.split(","))

#  10. 去除字符串首尾的"!"
# print(s.strip("!"))

#  11. 字符串反转
# print(s[::-1])

#  12. 字符串切片，获取"Python"
# print(s[7:13])

#  13. 将字符串s中的"Hello,"删除
# print(s.replace("Hello,",""))

#  14. 拼接两个字符串 "Hello," 和 "World!"
# connect = "Hello," + "World!"
# print(connect)

#  15. 使用f-string合并字符串和数字2021
# print(f"f-string,{2021}")

#  16. 找出'a'第一次出现的位置
# print(s.find("a"))

#  17. 找出'e'最后一次出现的位置
# print(s.rfind('e'))

#  18. 计算字符串中空格的数量
# print(s.count(" "))

#  19. 使用循环遍历字符串中的每个字符
# for i in s:
#     print(i,end=",")

#  20. 将字符串转为"列表"形式，每个字符为一个列表元素
# list_s = list(s)
# print(list_s)

#  21. 字符串排序（提示：先转换为列表）
# list_s = list(s)
# list_s.sort()
# print(list_s)

#  22. 判断字符串是否为数字
# print(s.isdigit())

#  23. 将列表 `['Hello,', 'Python', 'World!']` 使用空格连接为一个字符串
# str_list = ['Hello,', 'Python', 'World!']
# my_str = " ".join(str_list)
# print(my_str)

#  24. 使用%操作符格式化字符串，将数字100插入到"Number: "后面
# print("Number: %d" %100)

#  25. 检查字符串是否全部为小写字母
# print(s.islower())

#  26. 检查字符串是否全部为大写字母
# print(s.isupper())

#  27. 将数字列表 `[1, 2, 3]` 转换成字符串，元素之间用`-`连接
# num_list = [1,2,3]
# my_str = "-".join(map(str,num_list))
# print(my_str)

#  28. 找出字符串中所有的"o"的位置
# index = [i for i,char in enumerate(s) if char == "o"]
# print(index)

#  29. 替换字符串中的第一个"o"为"O"
# print(s.replace("o","O",1))

#  30. 字符串插入操作，向字符串指定位置插入子字符串"amazing "
# position = 5
# print(s[:position] + "amazing " + s[position:])

#param 进阶
s = "Python is great!"
s2 = "A man, a plan, a canal, Panama!"
# 1. 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串。
# reversed_s = ''
# for i in range(len(s) - 1, -1, -1):
#     reversed_s += s[i]
# print(reversed_s)

# 2. 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数。
# count_t = 0
# for char in s:
#     if char == 't':
#         count_t += 1
# print(count_t)

# 3. 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``。
# replace = ""
# for char in s:
#     if char == " ":
#         replace += "_"
#     else:
#         replace+=char
# print(replace)

# 4. 检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串。
# import re
# cleaned_s2 = re.sub(r'[^a-zA-Z]', '', s2).lower()
# is_palindrome = True
# left = 0
# right = len(cleaned_s2) - 1
# while left < right:
#     if cleaned_s2[left] != cleaned_s2[right]:
#         is_palindrome = False
#         break
#     left += 1
#     right -= 1
# print(is_palindrome)

# 5. 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置。
# index = -1
# for i in range(len(s) - 1):
#     if s[i:i+2] == "is":
#         index = i
#         break
# print(index)
# 6. 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted"`。
# insert_index = -1
# for i in range(len(s)):
#     if s[i] == 't':
#         insert_index = i + 1
#         break
# if insert_index != -1:
#     inserted_s = s[:insert_index] + "_inserted" + s[insert_index:]
# print(inserted_s)

# 7. 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"`。
# replace_index = -1
# for i in range(len(s) - 4):
#     if s[i:i+5] == "great":
#         replace_index = i
#         break
# if replace_index != -1:
#     replaced_s = s[:replace_index] + "awesome" + s[replace_index + 5:]
# print(replaced_s)

# 8. 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来。
# mid_index = len(s) // 2
# sliced_and_joined = s[mid_index:] + s[:mid_index]
# print(sliced_and_joined)

# 9. 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式。
# word_list = [word.capitalize() for word in s.split()]
# print(word_list)

# 10. 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`。
import string

s3 = "encryption"
encrypt_dict = {k: v for k, v in zip(string.ascii_lowercase, string.ascii_lowercase[12:] + string.ascii_lowercase[:12])}

def encrypt(text):
    encrypted_text = ''
    for char in text:
        if char in encrypt_dict:
            encrypted_text += encrypt_dict[char]
        else:
            encrypted_text += char
    return encrypted_text

encrypted_s3 = encrypt(s3)
print(encrypted_s3)
